From: Joaquim Rocha Date: Mon, 17 Jul 2017 10:55:20 +0000 (+0200) Subject: Fix crash when using the magnifier X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~219 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=76c4b0a9604d1c2406076864ada30e532068afa2;p=gnome-shell.git Fix crash when using the magnifier The first time that the session is started, it can happen that the AT SPI hasn't been correctly initialized, and this results in a crash when attempting to register the caret or focus listeners. In order to avoid this, these changes check the result of initializing the AT SPI, to allow further attempts when it has failed. https://bugzilla.gnome.org/show_bug.cgi?id=785047 --- diff --git a/js/ui/focusCaretTracker.js b/js/ui/focusCaretTracker.js index 265fcce71..01660e0b8 100644 --- a/js/ui/focusCaretTracker.js +++ b/js/ui/focusCaretTracker.js @@ -47,30 +47,27 @@ const FocusCaretTracker = new Lang.Class({ }, _initAtspi: function() { - if (!this._atspiInited) { - Atspi.init(); + if (!this._atspiInited && Atspi.init() == 0) { Atspi.set_timeout(250, 250); this._atspiInited = true; } + + return this._atspiInited; }, registerFocusListener: function() { - if (this._focusListenerRegistered) + if (!this._initAtspi() || this._focusListenerRegistered) return; - this._initAtspi(); - this._atspiListener.register(STATECHANGED + ':focused'); this._atspiListener.register(STATECHANGED + ':selected'); this._focusListenerRegistered = true; }, registerCaretListener: function() { - if (this._caretListenerRegistered) + if (!this._initAtspi() || this._caretListenerRegistered) return; - this._initAtspi(); - this._atspiListener.register(CARETMOVED); this._caretListenerRegistered = true; },